from clasesPrincipales.Instruccion import Instruccion
from clasesPrincipales.Kernel import Kernel
from clasesPrincipales.Programa import Programa
from memoriaFisica.paginacion.MMUpaginacion import MMUpaginacion
from planificacion.Prioridad import Prioridad

def mainPaginacionPrioridad():
    # Programas e instrucciones
    prog = Programa('Google Chrome', [Instruccion(Instruccion.CPU, 1), 
                          Instruccion(Instruccion.IO, 1),
                          Instruccion(Instruccion.CPU, 1), 
                          Instruccion(Instruccion.IO, 3),
                          Instruccion(Instruccion.CPU, 5), 
                          Instruccion(Instruccion.EXIT)])
    prog1 = Programa('Eclipse', [Instruccion(Instruccion.IO, 5),
                           Instruccion(Instruccion.CPU, 2),
                           Instruccion(Instruccion.IO, 2),
                           Instruccion(Instruccion.EXIT)])
    
    # Scheduler
    prioridad = Prioridad ()
    # Ajuste
    paginacion = MMUpaginacion(15, [0,5,10])
   
    # Kernel 
    kernel = Kernel(prioridad,paginacion)
    print('******************************************')
    print('******** El Kernel ha iniciado!!! ********')
    print('******************************************')
    print(prioridad)

    kernel.leerPrograma(prog)
    kernel.leerPrograma(prog1)
    kernel.stop()
    print('******************************************')
    print('******** El Kernel ha finalizado! ********')
    print('******************************************')
    
mainPaginacionPrioridad ()